
//#include <glad/glad.h>
//#include <GLFW/glfw3.h>
//
//
//#include <cstdio>
//#include <cstdlib>
//#include <iostream>

//void framebuffer_size_callback(GLFWwindow* window, int width, int height);
//void processInput(GLFWwindow *window);
//
//int _main(){
//    //1. 初始化设置
//    glfwInit();
//    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
//    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
//    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//    //MacOs
//    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
//
//    //2. 创建窗口对象
//    GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
//
//    if (window == NULL) {
//        std::cout << "Failed to create GLFW window" << std::endl;
//        glfwTerminate();
//        return -1;
//    }
//
//    //3.通知GLFW将我们窗口的上下文设置为当前线程的主上下文
//    glfwMakeContextCurrent(window);
//
//    //4.使用GLAD加载OpenGl的函数库
//    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){
//        std::cout << "Failed to initialize GLAD" << std::endl;
//        return -1;
//    }
//
//    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
//
//    while (!glfwWindowShouldClose(window)) {
//        processInput(window);
//        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
//        glClear(GL_COLOR_BUFFER_BIT);
//        glfwSwapBuffers(window);
//        glfwPollEvents();
//    }
//    glfwTerminate();
//    return 0;
//}
//
//
//
//void framebuffer_size_callback(GLFWwindow* window, int width, int height){
//    std::cout << "set opengl view port:" << width << ", height:" << height << std::endl;
//    //OpenGL的坐标范围为(-1, 1), 最终需要根据glViewport()设置的宽高来映射到具体的2D坐标;
//    //比如, 窗口大小(800, 600), (-0.5, 0.5)会映射为(200, 450)
//    glViewport(0, 0, width, height);
//}
//
//void processInput(GLFWwindow *window){
//    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
//        glfwSetWindowShouldClose(window, true);
//    }
//}
